#!/bin/bash
#********************************************************************
# Author: zhangjunjie
# Date: 2022-06-23
# FileName：centos_install_tengine.sh
# Desc: 只适用于 2.3.0 以下版本安装使用, 之后的版本在更新上去吧
#********************************************************************
## 先判断是否存在自定义的方法文件, 如果不存在, 则进行下载操作
if [ ! -e self_function.sh ]; then
	rpm -q wget || (yum install wget -y || { echo -e "\E[31;1m 安装 wget 软件包失败 \E[0m" ; exit; })

	echo -e "\E[33;1m 下载自定义方法中 \E[0m"
	wget https://gitee.com/gkdaxue/shell_script/raw/master/self_function.sh
	if [ ! -e self_function.sh ]; then 
		echo -e "\E[31;1m 下载自定义方法失败 \E[0m"
		exit;
	fi
fi

## 加载自定义方法
. ./self_function.sh
actions 'echo_tips' "加载自定义方法";

## 选择安装的版本信息
PS3="请选择你要安装的版本信息: "
echo "我们提供如下版本: "
version_menus=(
"tengine_2_1_2"
"tengine_2_3_2"
)

### ----------- 源码安装常量的位置 ----------- ###
SRC_DIR='/usr/local/src'
select temp_version in ${version_menus[@]} ; do
	case $temp_version in
		## tenginx-2.1.2
		"tengine_2_1_2")
			TENGINE_VERSION="2.1.2"
			actions 'echo_tips' "选择的版本为 2.1.2"
			install_menu=(
				"tengine_2_1_2"
				"tengine_and_lua_shared_2_1_2"
			)
			break;
			;;
		## tenginx-2.3.2
		"tengine_2_3_2")
			TENGINE_VERSION="2.3.2"
			actions 'echo_tips' "选择的版本为 2.3.2"
			install_menu=(
				"tengine_2_3_2"
			)
			break;
			;;		
		*)
			actions 'echo_error' "不知道选择的版本, 即将退出"
			exit;
		;;
	esac
done
TENGINE_DIR="tengine-${TENGINE_VERSION}"
PREFIX="/apps/${TENGINE_DIR}"
TENGINE_FILE="${TENGINE_DIR}.tar.gz"
TENGINE_DOWN_URL="http://tengine.taobao.org/download/${TENGINE_FILE}"
### ----------- 源码安装常量的位置 ----------- ###


yum install -y gcc pcre pcre-devel openssl openssl-devel


## 判断用户存不存在
id nginx  &> /dev/null
if [ $? -ne 0 ];then
	actions 'echo_tips' "创建 nginx 用户"
fi

## 判断安装目录存不存在以及下载源码文件
mkdir -p ${PREFIX}
cd $SRC_DIR
if [ ! -e $TENGINE_FILE ]; then
	wget $TENGINE_DOWN_URL
fi

## 安装 tengine 2.1.2
install_tengin_2_1_2 (){
	./configure --prefix=${PREFIX} \
		--user=nginx \
		--group=nginx \
		--with-http_ssl_module \
		--with-http_v2_module \
		--with-http_realip_module \
		--with-http_stub_status_module \
		--with-http_gzip_static_module \
		--with-pcre
	make && make install
	chown -Rf nginx.nginx ${PREFIX}
}

## 下载文件并进入下载目录
tar xf "${TENGINE_FILE}"
cd $TENGINE_DIR
PS3="请选择你要如何安装 : "
echo "我们提供如下菜单: "
select temp_install_menu in ${install_menu[@]} ; do
	case $temp_install_menu in
		## 只安装 tengine 2.1.2
		"tengine_2_1_2")
			actions 'echo_tips' "开始进行编译了"
			install_tengin_2_1_2
			actions 'echo_success' "编译完成, 即将退出"
			exit;
			;;
		## 安装 tengine 并且安装 lua 动态模块
		"tengine_and_lua_shared_2_1_2")
			actions 'echo_tips' "开始进行编译了 tengine_and_lua_shared"
			yum -y install lua-devel
			install_tengin_2_1_2
			./configure --prefix=${PREFIX} \
				--user=nginx \
				--group=nginx \
				--with-http_ssl_module \
				--with-http_v2_module \
				--with-http_realip_module \
				--with-http_stub_status_module \
				--with-http_gzip_static_module \
				--with-pcre \
				--with-http_lua_module=shared
			make dso_install
			chown -Rf nginx.nginx ${PREFIX}
			actions 'echo_success' "编译完成, 即将退出"	
			exit;	
			;;	
		## 安装 tengine 2.3.2
		"tengine_2_3_2")
			actions 'echo_tips' "开始进行编译了"
			./configure --prefix=${PREFIX} \
				--user=nginx \
				--group=nginx \
				--with-http_ssl_module \
				--with-http_v2_module \
				--with-http_realip_module \
				--with-http_stub_status_module \
				--with-http_gzip_static_module \
				--with-stream \
				--with-stream_ssl_module \
				--with-stream_realip_module \
				--with-pcre
			make && make install
			chown -Rf nginx.nginx ${PREFIX}
			actions 'echo_success' "编译完成, 即将退出"
			exit;
			exit;
			;;			
		*)
			echo "Selected number: $REPLY"
			echo "Selected number: $menu"
			exit;
			;;
	esac
done

